package schema

import (
	"time"
)

// UserLogin 用户登录方式对象
type UserLogin struct {
	ID        string    `json:"id"`                                    // 唯一标识
	UserId    string    `json:"user_id" binding:"required"`            // 用户唯一标识
	Type      int       `json:"type" binding:"required"`               // 登录方式(1:mobile 2:email 3:user_name 4:wx_wapp 5:wx_openid)
	Salt      string    `json:"salt"`                                  // 密盐
	Key       string    `json:"key" binding:"required"`                // Key
	Value     string    `json:"value"`                                 // Value
	Status    int       `json:"status" binding:"required,max=2,min=1"` // 状态(0:未激活 1:已激活 2:账号锁定 3:账号停用)
	Creator   string    `json:"creator"`                               // 创建者
	CreatedAt time.Time `json:"created_at"`                            // 创建时间
	UpdatedAt time.Time `json:"updated_at"`                            // 更新时间
}

// UserLoginUpdate 用户登录方式对象
type UserLoginUpdate struct {
	ID        string    `json:"id"`                                     // 唯一标识
	UserId    string    `json:"user_id" binding:"omitempty"`            // 用户唯一标识
	Type      int       `json:"type" binding:"omitempty"`               // 登录方式(1:mobile 2:email 3:user_name 4:wx_wapp 5:wx_openid)
	Salt      string    `json:"salt"`                                   // 密盐
	Key       string    `json:"key" binding:"omitempty"`                // Key
	Value     string    `json:"value"`                                  // Value
	Status    int       `json:"status" binding:"omitempty,max=2,min=1"` // 状态(0:未激活 1:已激活 2:账号锁定 3:账号停用)
	Creator   string    `json:"creator"`                                // 创建者
	CreatedAt time.Time `json:"created_at"`                             // 创建时间
	UpdatedAt time.Time `json:"updated_at"`                             // 更新时间
}

func (a *UserLoginUpdate) ToUserLogin() *UserLogin {
	return &UserLogin{
		ID:        a.ID,
		UserId:    a.UserId,
		Type:      a.Type,
		Salt:      a.Salt,
		Key:       a.Key,
		Value:     a.Value,
		Status:    a.Status,
		Creator:   a.Creator,
		CreatedAt: a.CreatedAt,
		UpdatedAt: a.UpdatedAt,
	}
}

// UserLoginQueryParam 查询条件
type UserLoginQueryParam struct {
	PaginationParam
	ID      string `form:"id"`      // 唯一标识
	UserId  string `form:"user_id"` // 用户唯一标识
	Type    int    `form:"type"`    // 登录方式(1:mobile 2:email 3:user_name 4:wx_wapp 5:wx_openid)
	Salt    string `form:"salt"`    // 密盐
	Key     string `form:"key"`     // Key
	Value   string `form:"value"`   // Value
	Status  int    `form:"status"`  // 状态(0:未激活 1:已激活 2:账号锁定 3:账号停用)
	Creator string `form:"creator"` // 创建者

}

// UserLoginQueryOptions 查询可选参数项
type UserLoginQueryOptions struct {
	OrderFields []*OrderField // 排序字段
}

// UserLoginQueryResult 查询结果
type UserLoginQueryResult struct {
	Data       UserLogins
	PageResult *PaginationResult
}

// UserLogins 用户登录方式列表
type UserLogins []*UserLogin
